package com.xiyu.service.vo.material.Inventory;

import com.xiyu.service.vo.material.order.baseVO.MaterialInventoryBase;
import com.xiyu.service.vo.material.info.baseVO.MaterialInfoBase;
import com.xiyu.service.vo.material.info.baseVO.MaterialCategoryBase;
import com.xiyu.service.vo.material.order.baseVO.MaterialInventoryDetailBase;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.hibernate.validator.constraints.Length;
import jakarta.validation.Valid;
import com.xiyu.service.enums.common.CommonStatusEnum;
import com.xiyu.service.framework.validation.InEnum;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import static com.xiyu.service.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
import java.time.LocalDateTime;

@Schema(description = "获取单个盘点单")
@Data
public class InventorySingleGetOutput extends MaterialInventoryBase {

    @Schema(description = "物资盘点单主键ID")
    private Long id;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime createTime;

    @Schema(description = "物资盘点明细")
    @Valid
    private List<detail> details;

    @Schema(description = "物资盘点明细")
    @Data
    public static class detail extends MaterialInventoryDetailBase {

        @Schema(description = "物资盘点明细主键ID")
        private Long id;

        @Schema(description = "物资信息")
        private material material;
    }

    @Schema(description = "物资类别")
    @Data
    public static class category extends MaterialCategoryBase {
    }

    @Schema(description = "物资信息")
    @Data
    public static class material extends MaterialInfoBase {

        @Schema(description = "物资类别")
        private category category;
    }
}